#pragma once
#include "basic/types.h"
#include "utils.h"

// Player 和 Unit 通用属性
struct Role {
  bool on_taxi() const;
  bool combating() const;
  float dist(float x, float y, float z) const;
  float dist_unit(const Role &other) const;
  float x() const;
  float y() const;
  float z() const;
  float h() const;
  float v() const;
  uint32 hp() const;
  uint32 hp_max() const;
  uint32 mp() const;
  uint32 mp_max() const;
  uint32 level() const;
  uint32 casting() const;
  uint32 channel() const;
  uint64 tid1() const;
  uint64 tid2() const;
  uintptr ptr() const;
  // --- Constructors ---
  Role(uint64 ptr);
  Role() = delete;
  Role(Role &&) = default;
  Role(const Role &) = default;
  Role &operator=(Role &&) = default;
  Role &operator=(const Role &) = default;
  ~Role();

private:
  uint64 ptr_;
};
